package com.topten.beans;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.servlet.http.HttpSession;

import com.topten.basicas.comum.Situacao;
import com.topten.basicas.organizacional.Cargo;
import com.topten.negocio.Fachada;
import com.topten.negocio.IFachada;
import com.topten.basicas.organizacional.Escolaridade;

import org.primefaces.event.RowEditEvent;

@ManagedBean
public class CargoBean {

	private Cargo cargo = new Cargo();
	private String mensagem;
	private Integer codigo;
	private Situacao[] situacaoCargo;
	
	public void limparCompos(){
		cargo.setDescricao(null);
		cargo.setSalario(0);
	}
	
	public Situacao[] getSituacaoCargo(){
		return Situacao.values();
	}
	
	public Integer getCodigo() {
		return codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	public String getMensagem() {
		return mensagem;
	}

	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}

	public List<Escolaridade> getEscolaridades(){
		return Fachada.getInstancia().listarTodasEscolaridades();
	}	
	
	public List<Cargo> getCargos(){
		return Fachada.getInstancia().listarCargos();
	}
	
	public Cargo getCargo() {
		return cargo;
	}

	public void setCargo(Cargo cargo) {
		this.cargo = cargo;
	}
	
	public String salvarCargo(){		
		Fachada.getInstancia().inserirCargo(cargo);				
		limparSessao();
		this.setMensagem("O Cargo foi cadastrado!");
		return "cargo.xhtml?faces-redirect=true";
	}
	
	public String removerCargo(Cargo cargo){		
		IFachada fachada = Fachada.getInstancia();
		fachada.removerCargo(cargo);
		return "listarCargo.xhtml?faces-redirect=true";
	}
	
	public String alterarCargo(Cargo cargoParam){				
		Fachada.getInstancia().alterarCargo(cargoParam);
		this.cargo = cargoParam;
		return "listarCargo";
	}
		
	
	public String listarCargo(){		
		return "listarCargo.xhtml?faces-redirect=true";
	}
	
	public String voltar(){
		return "cargo.xhtml?faces-redirect=true";
	}
	
	public void messagemSucesso(ActionEvent evnte){
		FacesContext.getCurrentInstance().addMessage(null,new FacesMessage("Cargo cadastrado com sucesso!"));
	} 
	public void onEdit(RowEditEvent event){
		Cargo car = (Cargo)event.getObject();
		Fachada.getInstancia().alterarCargo(car);
		System.out.println(car.getDescricao());
	}
	public void limparSessao(){
		HttpSession sessao = ((HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false));
		if (sessao != null){
			sessao.removeAttribute("cargoBean");			
		}		
	}
}
